<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:p="http://primefaces.org/ui">

    <ui:composition template="/plantillas/plantillaPrincipal.xhtml">
        <ui:define name="contenido">
            <f:view>
                <h:form id="formulario">
                    <p:panel header="Registrar Factura" style="width:85%;margin: 10px auto;">

                        <p:panelGrid style="width:100%;margin: 10px auto;" id="panelFactura"> 

                            <p:row>
                                <p:column>
                                    <h:outputLabel id="lblFactura" value="FACTURA (*)" />
                                </p:column>
                                <p:column></p:column>
                                <p:column colspan="2">
                                </p:column>
                            </p:row>

                            <p:row id="rowCategoria">
                                <p:column>
                                    <h:outputLabel id="lblCategoriaArticulo" value="CATEGORIA ARTICULO(*)" />
                                </p:column>
                                <p:column>
                                    <p:selectOneMenu id="cbxCategoriaArticulo" required="true" 
                                                     value="#{BKOrdenCompraServicio.idCategoriaArticuloFormulario}"
                                                     style="width: 140px"> 
                                        <f:selectItem itemLabel="Seleccionar" itemValue="0" /> 
                                        <f:selectItems value="#{BKOrdenCompraServicio.listaCategoriaArticulo}" var="cat" 
                                                       itemLabel="#{cat.nombre}" itemValue="#{cat.id}"/>	
                                        <p:ajax update="cbxSubCategoriaArticulo,cbxProveedor" listener="#{MBOrdenCompra.buscarSubCategorias}" />  
                                    </p:selectOneMenu>
                                    <p:message for="cbxCategoriaArticulo"/>	
                                </p:column>
                                <p:column>
                                    <h:outputLabel id="lblSubCategoriaArticulo" value="SUB CATEGORIA" />
                                </p:column>
                                <p:column>
                                    <p:selectOneMenu id="cbxSubCategoriaArticulo" style="width: 140px" 
                                                     value="#{BKOrdenCompraServicio.idSubCategoriaArticuloFormulario}"
                                                     disabled="#{BKOrdenCompraServicio.listaSubCategoriaArticulo eq null?'true':'false'}"> 
                                        <f:selectItem itemLabel="Seleccionar" itemValue="0" /> 
                                        <f:selectItems value="#{BKOrdenCompraServicio.listaSubCategoriaArticulo}" var="subCat" 
                                                       itemLabel="#{subCat.nombre}" itemValue="#{subCat.id}"/>	
                                        <p:ajax listener="#{MBOrdenCompra.seleccionarSubCategorias}" /> 
                                    </p:selectOneMenu>
                                </p:column>
                            </p:row>

                            <p:row>
                                <p:column>
                                    <h:outputLabel id="lblProveedor" value="PROVEEDOR(*)" />
                                </p:column>
                                <p:column>
                                    <p:selectOneMenu id="cbxProveedor" required="true" style="width: 140px" 
                                                     value="#{BKOrdenCompraServicio.idProveedorFormulario}"
                                                     disabled="#{BKOrdenCompraServicio.proveedorArticuloFormulario eq null?'true':'false'}" > 
                                        <f:selectItem itemLabel="Seleccionar" itemValue="0" /> 
                                        <f:selectItems value="#{BKOrdenCompraServicio.listaProveedor}" var="prov" 
                                                       itemLabel="#{prov.razonSocial}" itemValue="#{prov.id}"/>	
                                        <p:ajax update="txtDireccion,cbxContacto,cbxMoneda,btnAgregarArticulo" event="change" listener="#{MBOrdenCompra.elegirProveedor}" /> 
                                    </p:selectOneMenu>
                                    <p:message for="cbxProveedor"/>	
                                </p:column>
                                <p:column>
                                    <h:outputLabel id="lblDireccion" value="DIRECCION(*)" />
                                </p:column>
                                <p:column>
                                    <p:inputText id="txtDireccion" required="true"  style="width: 100%" maxlength="120"
                                                 value="#{BKOrdenCompraServicio.ordenCompraServicioFormulario.direccion}" 
                                                 disabled="#{BKOrdenCompraServicio.proveedorArticuloFormulario eq null?'true':'false'}"/>
                                    <p:message for="txtDireccion"/>	
                                </p:column>

                            </p:row>

                            <p:row>
                                <p:column>
                                    <h:outputLabel id="lblContacto" value="CONTACTO(*)" />
                                </p:column>
                                <p:column>
                                    <p:autoComplete value="#{BKOrdenCompraServicio.ordenCompraServicioFormulario.contacto}" 
                                                    completeMethod="#{MBOrdenCompra.buscarContacto}" 
                                                    id="cbxContacto" var="contacto" itemLabel="#{contacto}" 
                                                    itemValue="#{contacto}" forceSelection="false"
                                                    disabled="#{BKOrdenCompraServicio.proveedorArticuloFormulario eq null?'true':'false'}">
                                        <p:ajax listener="#{MBOrdenCompra.seleccionarContacto}" event="itemSelect" update="txtTelefono" /> 
                                    </p:autoComplete>
                                    <p:message for="cbxContacto"/>	
                                </p:column>
                                <p:column>
                                    <h:outputLabel id="lblTelefono" value="TELEFONO(*)" />
                                </p:column>
                                <p:column>
                                    <p:inputText id="txtTelefono" required="true" maxlength="10"
                                                 value="#{BKOrdenCompraServicio.ordenCompraServicioFormulario.telefono}" />
                                    <p:message for="txtTelefono"/>	
                                </p:column>
                            </p:row>


                            <p:row>
                                <p:column>
                                    <h:outputLabel id="lblMoneda" value="MONEDA(*)" />
                                </p:column>
                                <p:column>
                                    <p:selectOneMenu id="cbxMoneda" required="true" style="width: 140px"
                                                     value="#{BKOrdenCompraServicio.idTipoMonedaFormulario}"
                                                     disabled="#{BKOrdenCompraServicio.proveedorArticuloFormulario eq null?'true':'false'}" > 
                                        <f:selectItem itemLabel="Seleccionar" itemValue="0" /> 
                                        <f:selectItems value="#{BKOrdenCompraServicio.listaTipoMoneda}" var="mon" 
                                                       itemLabel="#{mon.nombre}" itemValue="#{mon.id}"/>	
                                    </p:selectOneMenu>
                                    <p:message for="cbxMoneda"/>	
                                </p:column>
                                <p:column>
                                    <h:outputLabel id="lblFechaEmision" value="FECHA EMISION(*)" />
                                </p:column>
                                <p:column>
                                    <p:calendar id="calendarFechaEmision" value="#{BKOrdenCompraServicio.ordenCompraServicioFormulario.fechaEmision}" 
                                                pattern="dd/MM/yyyy" maxdate="#{BKOrdenCompraServicio.ordenCompraServicioFormulario.plazoEntrega}"
                                                showOn="button" showButtonPanel="true" navigator="true" 
                                                required="true">
                                        <p:ajax event="dateSelect" listener="#{MBOrdenCompra.marcarInicio}" update="calendarFechaEntrega,txtDias" />
                                    </p:calendar>
                                    <p:message for="calendarFechaEmision"/>
                                </p:column>

                            </p:row>


                            <p:row>
                                <p:column colspan="4" >
                                    <p:panel header="Detalle Orden de Compra" style="width:100%;margin: 10px auto;" id="pnlDetalle">
                                        <p:panelGrid style="width:100%;margin: 10px auto;">
                                            <p:row>
                                                <p:column colspan="8" >
                                                    <p:commandButton value="AGREGAR ARTICULO" styleClass="ui-priority-primary" id="btnAgregarArticulo"
                                                                     actionListener="#{MBDetalleOrdenCompra.nuevoDetalle}" immediate="true"
                                                                     oncomplete="agregarDetalle.show()" update=":formularioDetalleOC:panelDetalle" 
                                                                     disabled="#{BKOrdenCompraServicio.proveedorArticuloFormulario eq null?'true':'false'}"/>
                                                </p:column>
                                            </p:row>
                                            <p:row>
                                                <p:column colspan="8" >
                                                    <p:dataTable id="dataTablaDetalleOrden" var="detalle" widgetVar="carsTable"
                                                                 value="#{BKOrdenCompraServicio.listaDetalleOrdenCompraServicio}" 
                                                                 emptyMessage="No se encontro detalle de la orden" filteredValue="" rowIndexVar="rowIndex"
                                                                 paginator="true" rows="10" paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} 
                                                                 {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" rowsPerPageTemplate="5,10,15"> 

                                                        <p:column id="idColumnaNum"	headerText="Num." style="width: 5%"> 
                                                            <h:outputText value="#{rowIndex+1}" /> 
                                                        </p:column>

                                                        <p:column id="idDescripcion"	
                                                                  headerText="Descripcion"  
                                                                  filterMatchMode="contains"> 
                                                            <h:outputText value="#{detalle.idArticulo.descripcion}" /> 
                                                        </p:column>

                                                        <p:column id="idUnidadMedida"
                                                                  headerText="UM"  
                                                                  filterMatchMode="contains"> 
                                                            <h:outputText value="#{detalle.unidadMedidaForm}" /> 
                                                        </p:column>

                                                        <p:column id="idCantidad"	
                                                                  headerText="Cant."  
                                                                  filterMatchMode="contains"> 
                                                            <h:outputText value="#{detalle.cantidadForm}" >
                                                                <f:convertNumber pattern="#0.00"/>
                                                            </h:outputText> 
                                                        </p:column>

                                                        <p:column id="idPrecio"	
                                                                  headerText="Precio"  
                                                                  filterMatchMode="contains"> 
                                                            <h:outputText value="#{detalle.precioForm}" >
                                                                <f:convertNumber pattern="#0.00"/>
                                                            </h:outputText> 
                                                        </p:column>

                                                        <p:column id="idSubTotal" 	
                                                                  headerText="Sub Total"  
                                                                  filterMatchMode="contains"> 
                                                            <h:outputText value="#{detalle.subTotal}" >
                                                                <f:convertNumber pattern="#0.00"/>
                                                            </h:outputText>
                                                        </p:column>

                                                        <p:column id="idObservacion"
                                                                  headerText="Observacion"  
                                                                  filterMatchMode="contains"> 
                                                            <h:outputText value="#{detalle.observacion}" /> 
                                                        </p:column>

                                                        <p:column id="idAccionesCuentaBancaria" headerText="Acciones" >
                                                            <p:commandButton id="btnEditarDetalle" icon="ui-icon-pencil" title="Editar" 
                                                                             oncomplete="agregarDetalle.show()" immediate="true" ajax="true" 
                                                                             update=":formularioDetalleOC:panelDetalle" action="#{MBDetalleOrdenCompra.editarDetalle}" >
                                                                <f:setPropertyActionListener value="#{detalle}" target="#{BKDetalleOrdenCompraServicio.detalleOrdenCSFormulario}" />
                                                            </p:commandButton>
                                                            
                                                            <p:commandButton id="btnEliminarDetalle" title="Eliminar" icon="ui-icon-trash"  oncomplete="confirmacion.show()" immediate="true">
                                                                <f:setPropertyActionListener value="#{detalle}" target="#{BKDetalleOrdenCompraServicio.detalleOrdenCSSeleccionado}" />
                                                            </p:commandButton>
                                                        </p:column>

                                                    </p:dataTable>
                                                </p:column>
                                            </p:row>
                                            <p:row>
                                                <p:column>
                                                    <h:outputLabel id="lblValorVenta" value="VALOR DE VENTA" />
                                                </p:column>
                                                <p:column colspan="3"> 
                                                    <p:inputText id="txtValorVenta" style="" readonly="true"
                                                                 value="#{BKOrdenCompraServicio.ordenCompraServicioFormulario.subtotal}">
                                                        <f:convertNumber pattern="#0.00"/>
                                                    </p:inputText>
                                                </p:column>

                                            </p:row>
                                            <p:row>
                                                <p:column>
                                                    <h:outputLabel id="lblIGV" value="IGV (18%)" />
                                                </p:column>
                                                <p:column colspan="3">
                                                    <p:inputText id="txtIGV" readonly="true"
                                                                 value="#{BKOrdenCompraServicio.ordenCompraServicioFormulario.igv}" >
                                                        <f:convertNumber pattern="#0.00"/>
                                                    </p:inputText>
                                                </p:column>
                                            </p:row>
                                            <p:row>
                                                <p:column>
                                                    <h:outputLabel id="lblTotalGral" value="TOTAL GENERAL" />
                                                </p:column>
                                                <p:column >
                                                    <p:inputText id="txtTotalGral" readonly="true"
                                                                 value="#{BKOrdenCompraServicio.ordenCompraServicioFormulario.total}" >
                                                        <f:convertNumber pattern="#0.00"/>
                                                    </p:inputText>
                                                </p:column>
                                                <p:column>
                                                    <h:outputLabel id="lblImporteTotal" value="SON" />
                                                </p:column>
                                                <p:column>
                                                    <p:inputText id="txtImporteTotal" readonly="true" style="width: 100%"
                                                                 value="#{BKOrdenCompraServicio.ordenCompraServicioFormulario.expresionTotal}" />
                                                </p:column>
                                            </p:row>

                                        </p:panelGrid>

                                    </p:panel>
                                </p:column>


                            </p:row>
                            <p:row>
                                <p:column >
                                    <h:outputLabel id="lblFechaEntrega" value="PLAZO DE ENTREGA" />
                                </p:column>
                                <p:column colspan="3">
                                    <p:calendar id="calendarFechaEntrega" value="#{BKOrdenCompraServicio.ordenCompraServicioFormulario.plazoEntrega}" showOn="button"
                                                pattern="dd/MM/yyyy" mindate="#{BKOrdenCompraServicio.ordenCompraServicioFormulario.fechaEmision}"
                                                disabled="#{BKOrdenCompraServicio.ordenCompraServicioFormulario.fechaEmision eq null?'true':'false'}" navigator="true" >
                                        <p:ajax event="dateSelect" listener="#{MBOrdenCompra.marcarFin}" update="calendarFechaEmision,txtDias" />
                                    </p:calendar>
                                    <h:outputLabel id="txtDias" value="#{BKOrdenCompraServicio.ordenCompraServicioFormulario.diasPlazo}" 
                                                   style="margin: 0 10px;width: 30px"/>d&iacute;a(s)
                                    <p:message for="calendarFechaEntrega"/>	
                                </p:column>
                            </p:row>
                            <p:row>
                                <p:column>
                                    <h:outputLabel id="lblLugarEntrega" value="LUGAR DE ENTREGA" />
                                </p:column>
                                <p:column colspan="2">
                                    <p:inputTextarea id="txtLocal" style="width: 100%"  maxlength="250" rows="3" cols="70"
                                                     value="#{BKOrdenCompraServicio.ordenCompraServicioFormulario.lugarEntrega}"/>

                                </p:column>
                                <p:column>
                                    <p:commandButton value="BUSCAR DIRECCION" styleClass="ui-priority-primary" id="btnBuscarDireccion"
                                                     actionListener="#{MBSede.inicializarBusquedaDireccion}" immediate="true"
                                                     onclick="buscarDireccion.show()" update=":formDireccion:panelDireccion"/>
                                </p:column>
                            </p:row>


                            <p:row>
                                <p:column colspan="4" >
                                    <p:panel header="Negociacion de Pago" style="width:100%;margin: 10px auto;">
                                        <p:panelGrid style="width:80%;margin: 10px auto;">
                                            <p:row>
                                                <p:column>
                                                    <h:outputLabel id="lblTipoPago" value="TIPO DE PAGO" />
                                                </p:column>
                                                <p:column>
                                                    <p:selectOneMenu id="cbxTipoPago" required="true" 
                                                                     value="#{BKOrdenCompraServicio.ordenCompraServicioFormulario.tipoPago}"> 
                                                        <f:selectItem itemLabel="Seleccionar" itemValue="" /> 
                                                        <f:selectItem itemLabel="Credito" itemValue="CREDITO" /> 
                                                        <f:selectItem itemLabel="Efectivo" itemValue="EFECTIVO" />	
                                                    </p:selectOneMenu>
                                                    <p:message for="cbxTipoPago"/>	
                                                </p:column>
                                                <p:column>
                                                    <h:outputLabel id="lblFormaPago" value="FORMA DE PAGO" />
                                                </p:column>
                                                <p:column>
                                                    <p:selectOneMenu id="cbxFormaPago" required="true" 
                                                                     value="#{BKOrdenCompraServicio.ordenCompraServicioFormulario.formaPago}"> 
                                                        <f:selectItem itemLabel="Seleccionar" itemValue="" /> 
                                                        <f:selectItem itemLabel="Letra" itemValue="Letra" /> 
                                                        <f:selectItem itemLabel="Cheque" itemValue="Cheque" />	
                                                    </p:selectOneMenu>
                                                    <p:message for="cbxFormaPago"/>	
                                                </p:column>
                                            </p:row>   
                                            <p:row>
                                                <p:column>
                                                    <h:outputLabel id="lblDiasPago" value="DIAS PARA PAGAR" />
                                                </p:column>
                                                <p:column>
                                                    <p:inputText id="txtDiasPago" required="true" maxlength="3" 
                                                                 value="#{BKOrdenCompraServicio.ordenCompraServicioFormulario.diasPago}"/>
                                                    <p:message for="txtDiasPago"/>	
                                                </p:column>
                                                <p:column>
                                                    <h:outputLabel id="lblDiasLibre" value="DIAS LIBRES"  />
                                                </p:column>
                                                <p:column >
                                                    <p:inputText id="txtDiasLibre" maxlength="3"
                                                                 value="#{BKOrdenCompraServicio.ordenCompraServicioFormulario.diasLibres}"/>
                                                    <p:message for="txtDiasPago"/>
                                                </p:column>

                                            </p:row>
                                            <p:row>
                                                <p:column>
                                                    <h:outputLabel id="lblComentario" value="COMENTARIO" />
                                                </p:column>
                                                <p:column colspan="3">
                                                    <p:inputTextarea id="inTxtComentario" rows="2" cols="70" maxlength="150" 
                                                                     value="#{BKOrdenCompraServicio.ordenCompraServicioFormulario.detallePago}"/>
                                                </p:column>
                                            </p:row>


                                        </p:panelGrid>

                                    </p:panel>
                                </p:column>


                            </p:row>

                        </p:panelGrid>


                        <p:panelGrid style="width:40%;margin: 10px auto;">

                            <p:row>
                                <p:column>
                                    <p:commandButton  action="#{MBOrdenCompra.comando.aceptar()}" ajax="false" value="#{MBOrdenCompra.comando.nombre}"/>
                                </p:column>
                                <p:column>
                                    <p:commandButton  ajax="false" value="Emitir" id="btnEmitir" action="#{MBOrdenCompra.emitirOrden()}"
                                                      disabled="#{BKOrdenCompraServicio.listaDetalleOrdenCompraServicio eq null?true:false}"/>
                                </p:column>
                                <p:column>
                                    <p:commandButton action="#{MBOrdenCompra.cancelar()}" ajax="false" immediate="true" value="Cancelar"/>
                                </p:column>
                            </p:row>	

                        </p:panelGrid>

                    </p:panel>	

                    <p:confirmDialog id="dlgEliminarDetalle" message="#{message['dialog.confirmacion.mensaje']}" 
                                     header="#{message['dialog.confirmacion.header']}" severity="alert" widgetVar="confirmacion">
                        <h:panelGrid style="width: auto;margin:0px auto;border:0px;padding: 0 5px" columns="2">
                            <p:commandButton id="btnConfEliDetalle" update="pnlDetalle,btnEmitir,cbxCategoriaArticulo,
                                             cbxSubCategoriaArticulo,cbxProveedor,bloques" value="Si"  oncomplete="confirmacion.hide()"  
                                             actionListener="#{MBDetalleOrdenCompra.eliminarDetalle}" style="text-align: center" immediate="true" />  
                            <p:commandButton id="btnCancEliDetalle" value="No" onclick="confirmacion.hide()" type="button" style="text-align: center" />   
                        </h:panelGrid>
                    </p:confirmDialog>	


                    <h:panelGrid id="bloques">
                        <p:blockUI block="cbxCategoriaArticulo" id="blkCat" 
                                   blocked="#{BKOrdenCompraServicio.listaDetalleOrdenCompraServicio eq null?'false':'true'}"/>  
                        <p:blockUI block="cbxSubCategoriaArticulo" id="blkSub" 
                                   blocked="#{BKOrdenCompraServicio.listaDetalleOrdenCompraServicio eq null?'false':'true'}"/>
                        <p:blockUI block="cbxProveedor" id="blkPro" 
                                   blocked="#{BKOrdenCompraServicio.listaDetalleOrdenCompraServicio eq null?'false':'true'}"/>
                    </h:panelGrid>
                </h:form>

                <p:dialog widgetVar="agregarDetalle" id="panAgregarDetalle" header="Detalle de Factura" modal="true" >
                    <ui:include src="detalleFactura.xhtml" /> 
                </p:dialog>

                <p:dialog widgetVar="buscarAntiguo"  header="Buscar Factura" modal="true" >
                    <ui:include src="buscarFactura.xhtml" /> 
                </p:dialog>

                <p:dialog widgetVar="buscarDireccion"  header="Buscar Direccion" modal="true" >
                    <ui:include src="../../../general/direccion.xhtml" /> 
                </p:dialog>

            </f:view>
        </ui:define>

    </ui:composition>
</html>